#include "board_init.h"

#include "FreeRTOS.h"
#include "bsp_spi_oled1305.h"
#include "cmsis_os.h"
#include "main.h"
#include "task.h"

void BOARD_Init() {
    for (size_t i = 0; i < 3; i++) {
        HAL_GPIO_WritePin(LED_R, GPIO_PIN_RESET);
        osDelay(300);
        HAL_GPIO_WritePin(LED_R, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED_G, GPIO_PIN_RESET);
        osDelay(300);
        HAL_GPIO_WritePin(LED_G, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED_B, GPIO_PIN_RESET);
        osDelay(300);
        HAL_GPIO_WritePin(LED_B, GPIO_PIN_SET);
    }

    BEEP(3);
    osDelay(1000);

    // 初始化OLED

    OLED_Init();
    osDelay(50);
    OLED_Clear();
    osDelay(50);
    // 显示测试内容
    OLED_ShowNum(1, 0, 100000, 10);
    OLED_ShowString(2, 1, "hello word");
    OLED_ShowNum(3,2,555555, 10);
}

void BOARD_Loop() {
    if (HAL_GPIO_ReadPin(KEY_1) == GPIO_PIN_RESET) {
        HAL_GPIO_WritePin(LED_R, GPIO_PIN_RESET);
    } else {
        HAL_GPIO_WritePin(LED_R, GPIO_PIN_SET);
    }

    if (HAL_GPIO_ReadPin(KEY_2) == GPIO_PIN_RESET) {
        HAL_GPIO_WritePin(LED_G, GPIO_PIN_RESET);

    } else {
        HAL_GPIO_WritePin(LED_G, GPIO_PIN_SET);
    }

    if (HAL_GPIO_ReadPin(KEY_3) == GPIO_PIN_RESET) {
        HAL_GPIO_WritePin(LED_B, GPIO_PIN_RESET);

    } else {
        HAL_GPIO_WritePin(LED_B, GPIO_PIN_SET);
    }
}

void BEEP(uint8_t times) {
    for (size_t i = 0; i < times; i++) {
        HAL_GPIO_WritePin(BUZZER, GPIO_PIN_SET);
        osDelay(250);
        HAL_GPIO_WritePin(BUZZER, GPIO_PIN_RESET);
        osDelay(250);
    }
}
